﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Skauler.Model
{
    public class Student : INotifyPropertyChanged
    {
        #region Fields

        int _studentID;

        string _admissionNumber;
        string _firstName;
        string _middleName;
        string _lastName;
        string _guardiansName;
        string _streetAddress;
        string _city;
        string _pinCode;
        string _remarks;
        string _birthPlace;
        string _nationality;
        string _motherTounge;
        string _religion;

        PersonCategory _studentCategory;

        BloodGroup _bloodGroup;

        DateTime _dateOfBirth;
        DateTime _dateOfAdmission;

        PhoneNumber _parentsFixedPhoneNumber;
        PhoneNumber _parentsCellPhoneNumber;

        Gender _gender;


        #endregion

        #region Properties

        public int StudentID
        {
            get
            {
                return _studentID;
            }
            set
            {
                _studentID = value;
            }
        }

        public string AdmissionNumber
        {
            get
            {
                return _admissionNumber;
            }
            set
            {
                _admissionNumber = value;
            }
        }
        public string FirstName
        {
            get
            {
                return _firstName;
            }
            set
            {
                _firstName = value;
            }
        }
        public string MiddleName
        {
            get
            {
                return _middleName;
            }
            set
            {
                _middleName = value;
            }
        }
        public string LastName
        {
            get
            {
                return _lastName;
            }
            set
            {
                _lastName = value;
            }

        }
        public string GuardiansName
        {
            get
            {
                return _guardiansName;
            }
            set
            {
                _guardiansName = value;
            }
        }
        public string StreetAddress
        {
            get
            {
                return _streetAddress;
            }
            set
            {
                _streetAddress = value;
            }
        }
        public string City
        {
            get
            {
                return _city;
            }
            set
            {
                _city = value;
            }
        }
        public string PinCode
        {
            get
            {
                return _pinCode;
            }
            set
            {
                _pinCode = value;
            }
        }
        public string Remarks
        {
            get
            {
                return _remarks;
            }
            set
            {
                _remarks = value;
            }
        }
        public string BirthPlace
        {
            get
            {
                return _birthPlace;
            }
            set
            {
                _birthPlace = value;
            }
        }
        public string Nationality
        {
            get
            {
                return _nationality;
            }
            set
            {
                _nationality = value;
            }
        }
        public string MotherTounge
        {
            get
            {
                return _motherTounge;
            }
            set
            {
                _motherTounge = value;
            }
        }
        public string Religion
        {
            get
            {
                return _religion;
            }
            set
            {
                _religion = value;
            }
        }

        PersonCategory StudentCategory
        {
            get
            {
                return _studentCategory;
            }
            set
            {
                _studentCategory = value;
            }
        }

        BloodGroup BloodGroup
        {
            get
            {
                return _bloodGroup;
            }
            set
            {
                _bloodGroup = value;
            }
        }

        public PhoneNumber ParentsFixedPhoneNumber
        {
            get
            {
                return _parentsFixedPhoneNumber;
            }
            set
            {
                _parentsFixedPhoneNumber = value;
            }
        }
        public PhoneNumber ParentsCellPhoneNumber
        {
            get
            {
                return _parentsCellPhoneNumber;
            }
            set
            {
                _parentsCellPhoneNumber = value;
            }
        }

        public Gender StudentGender
        {
            get
            {
                return _gender;
            }
            set
            {
                _gender = value;
            }
        }
        public DateTime DateOfBirth
        {
            get
            {
                return _dateOfBirth;
            }
            set
            {
                _dateOfBirth = value;
            }
        }
        public DateTime DateOfAdmission
        {
            get
            {
                return _dateOfAdmission;
            }
            set
            {
                _dateOfAdmission = value;
            }
        }


        #endregion

        #region Methods
        #endregion

        public Student()
        {

        }
        #region INotifyPropertyChanged Implementation

        public event PropertyChangedEventHandler PropertyChanged;
        private void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
                handler(this, new PropertyChangedEventArgs(propertyName));
        }

        #endregion
    }
}
